import WxRequest from "./request";

// 是否显示重新登录
let isRelogin = { show: false };
// ----------------- 实例化 ----------------------
// 对 WxRequest 进行实例化
const instance = new WxRequest({
  baseURL: 'https://tenapi.cn/v2/',
  timeout: 15000,
});

// 配置请求拦截器
instance.interceptors.request = (config) => {
  // 在发送请求之前做些什么
  console.log('接口参数', config.data);
  if(config.isLoading) {
	  wx.showLoading({
	    title: '加载中',
	  })
  }
  // 从本地获取 token
  if (wx.getStorageSync("token")) {
    // 如果存在 token ，则添加请求头
    config.header["token"] = wx.getStorageSync("token");
  }
  // 返回请求参数
  return config;
};

// 响应拦截器
instance.interceptors.response = (response) => {
  wx.hideLoading()
  // console.log(response, "响应拦截器");
  // 测试
  response.isSuccess = true
  response.data = {
	  code: 200,
	  data: {
		  token: 'asdasd',
		  unionId: 'unionId',
		  openId: 'openId',
		  sessionKey: 'sessionKey',
		  mobile: '13555555555',
		  userName: 'zhanwj',
		  avatar: '/static/avatar.png'
	  }
  }
  
  const { isSuccess, data } = response;
  // isSuccess: false 表示是网络超时或其他问题，提示 网络异常，同时将返回即可
  if (!isSuccess) {
    wx.showToast({
      title: '"网络异常，请稍后重试~"',
      icon: "error",
    });
    // 如果请求错误，将错误的结果返回出去
    return response;
  }
  switch (data.code) {
    case 200:
	  console.log('data', data)
	  return data;
    case 208:
      // 控制多个接口触发，弹框只出现一次
      if (!isRelogin.show) {
        isRelogin.show = true;
        wx.showModal({
          showCancel: false,
          title: "提示",
          content: "登录授权过期，请重新授权",
          complete: (res) => {
            console.log(res);
            // 清空token
            wx.removeStorageSync("token");
            //  返回首页
            wx.reLaunch({
              url: "/pages/login/login",
            });
            // 点击确认后恢复状态
            isRelogin.show = false;
          },
        });
      }
      // 将错误继续向下传递
      return Promise.reject(response);

    default:
      wx.showToast({
        title: "接口调用失败~~~~",
        icon: "none",
      });
      // 将错误继续向下传递
      return Promise.reject(response);
  }
};

// 将 WxRequest 的实例通过模块化的方式暴露出去
export default instance;

